package com.fjwt.gz.db.dto;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

/**
 * <p>
 * 活动公众号渠道表
 * </p>
 *
 * @author shiyonghao
 * @since 2025-04-09
 */
@Data
public class ActivityChannelDTO {

    /**
     * 主键
     */
    private Long activityChannelId;

    /**
     * 微信公众号appid
     */
    private String appId;

    /**
     * 渠道码(根据channel_type判断  0：网点号-员工编号 1：机构号-商户号 2：机构号 3：网点号-自建渠道号)
     */
    private String channelCode;

    /**
     * 渠道类型（0：机构员工，1：商户，2：机构网点  3：自建渠道）
     */
    private Integer channelType;

    /**
     * 渠道名称
     */
    private String channelName;

    /**
     * 获取的二维码ticket，凭借此ticket可以在有效时间内换取二维码
     */
    private String ticket;

    /**
     * 该二维码过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expireTime;

    /**
     * 二维码图片解析后的地址，开发者可根据该地址自行生成需要的二维码图片
     */
    private String url;

    /**
     * oss记录ID
     */
    private Long ossRecordId;

    /**
     * 是否删除 0否 1是，默认0
     */
    private Integer isDeleted;

    /**
     * 当channel_type=1时，是否开启距离限制，0否 1是，默认1
     */
    private Integer isDistanceLimit;

    /**
     * 当channel_type=1时，距离限制; 商家处的活动渠道码（默认：根据归属机构号查距离网点100米内不能参与活动）
     */
    private Float distanceLimit;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateAt;

    /**
     * oss文件地址
     */
    private String ossFileUrl;

    /**
     * 机构等级
     */
    private Integer level;

    /**
     * 机构ID
     */
    private String agentNo;

    /**
     * 绑定机构网点ID（4级机构）和渠道码一 一对应
     */
    private String agentNo4;

    /**
     * 渠道码集合
     */
    private List<String> channelCodes;

    /**
     * 机构号集合
     */
    private List<String> agentNoList;

    /**
     * 经纬度坐标
     */
    private PointDTO location;

    /**
     * 地址
     */
    private String address;

    /**
     * 地区编码
     */
    private String areaCode;

    /**
     * 地区名称
     */
    private String areaName;

    /**
     * 活动渠道
     */
    @Data
    public static class ActivityChannel {

         /**
         * 渠道码
         */
        private String channelCode;

        /**
         * 渠道码名称
         */
        private String channelName;

        /**
         * 失败原因
         */
        private String errorMessage;

        /**
         * 错误类型
         * 1已存在
         * 2不存在
         */
        private Integer errType;

        /**
         * 当渠道类型为商户类型时，是否开启距离限制，0否 1是，默认1
         */
        private String isDistanceLimit;

        /**
         * 当渠道类型为商户类型时，距离限制; 商家处的活动渠道码（默认：根据归属机构号查距离网点100米内不能参与活动）
         */
        private Float distanceLimit;

        /**
         * 机构ID
         */
        private String agentNo;

        /**
         * 绑定机构网点ID（4级机构）和渠道码一 一对应
         */
        private String agentNo4;

        /**
         * 经度
         */
        private String longitude;
        /**
         * 纬度
         */
        private String latitude;
        /**
         * 地址
         */
        private String address;
    }

}
